home *** CD-ROM | disk | FTP | other *** search
/ Software Vault: The Games Collection 1 / software vault.zip / software vault / CDR10 / YICN23.ZIP / UNITS / FEVENT.CPP < prev    next >
C/C++ Source or Header  |  1992-12-21  |  3KB  |  85 lines

  1. #ifndef EVENT.H
  2. #include "fevent.h"
  3. #endif
  4.  
  5.  
  6. void fevent::advance()
  7. {
  8.   if (thisLine == NULL)
  9.     addCommand(scriptNode::turn, direction,0,0,0);
  10.   factor::advance();
  11.   if (thisFrame == directionIcons[direction])
  12.     {
  13.     if (spawningActor == NULL)
  14.       remove();            //destroy this copy of the event
  15.     else
  16.        (spawningActor->spawnedActor = NULL);
  17.     delete(this);        //when it's done showing!
  18.     }
  19. }
  20.  
  21. void fevent::addAt(int x, int y, int sqx, int sqy) //create a copy of this
  22. {                          //event and put it on
  23.   fevent * new_event = new fevent;          //the map.  It's destroyed
  24.   if (new_event == NULL) return;
  25.   new_event->mapX = x;                  //when its show is over!
  26.   new_event->mapY = y;
  27.   new_event->squareX = sqx;
  28.   new_event->squareY = sqy;
  29.   new_event->mymap = mymap;
  30.   new_event->turn(direction);
  31.   new_event->assignFevent(myIconNumber, factor::eightFace);
  32.   new_event->spawningActor = NULL;
  33.   new_event->spawnedActor = NULL;
  34.   new_event->put(x, y);
  35. }
  36.  
  37. directionTable * fevent::feventTable = new directionTable[MAX_ICONS];
  38.  
  39. void fevent::loadFevent(int position, char * special, char * sw, char * s,
  40.             char * se, char * w, char * center, char * e,
  41.             char * nw, char * n, char * ne, yakLib * myYakLib, icon::flagType flags)
  42. {
  43.   feventTable[position][factor::special].addAll(special, flags, myYakLib);
  44.   feventTable[position][factor::southwest].addAll(sw, flags, myYakLib);
  45.   feventTable[position][factor::south].addAll(s, flags, myYakLib);
  46.   feventTable[position][factor::southeast].addAll(se, flags, myYakLib);
  47.   feventTable[position][factor::west].addAll(w, flags, myYakLib);
  48.   feventTable[position][factor::center].addAll(center, flags, myYakLib);
  49.   feventTable[position][factor::east].addAll(e, flags, myYakLib);
  50.   feventTable[position][factor::northwest].addAll(nw, flags, myYakLib);
  51.   feventTable[position][factor::north].addAll(n, flags, myYakLib);
  52.   feventTable[position][factor::northeast].addAll(ne, flags, myYakLib);
  53. }
  54.  
  55.  
  56. void fevent::assignFevent(int iconNumber, int mode, byte identity)
  57. {
  58.   myIdentity = identity;
  59.   if (myIdentity == 255)
  60.     myIdentity = iconNumber;
  61.   myIconNumber = iconNumber;
  62.   for (int counter = 0; counter < 10; ++counter)
  63.     directionIcons[counter] = feventTable[iconNumber][counter].firstFrame;
  64.   switch (mode)
  65.   {
  66.     case factor::eightFace:    break;
  67.     case factor::oneFace:    for (counter = 1; counter < 10; ++counter)
  68.               directionIcons[counter] = feventTable[iconNumber][center].firstFrame;
  69.             break;
  70.     case factor::twoFace:    directionIcons[factor::north] = feventTable[iconNumber][center].firstFrame;
  71.             directionIcons[factor::south] = feventTable[iconNumber][center].firstFrame;
  72.     case factor::fourFace:    directionIcons[factor::northwest] = feventTable[iconNumber][west].firstFrame;
  73.             directionIcons[factor::southwest] = feventTable[iconNumber][west].firstFrame;
  74.             directionIcons[factor::northeast] = feventTable[iconNumber][east].firstFrame;
  75.             directionIcons[factor::southeast] = feventTable[iconNumber][east].firstFrame;
  76.             break;
  77.   }
  78.   for (counter = 0; counter < 10; ++counter)
  79.     if (directionIcons[counter] == NULL)  // if it's not loaded, look @ center
  80.       directionIcons[counter] = feventTable[iconNumber][center].firstFrame;
  81.   if (direction > 10)
  82.     direction = 5;
  83.   thisFrame = directionIcons[direction];
  84. }
  85.